package cn.itcalvin.sncoal.cth.mapper.main;

import cn.itcalvin.sncoal.cth.domain.InfoPf;
import cn.itcalvin.sncoal.cth.domain.InfoPfSystem;
import cn.itcalvin.sncoal.cth.pojo.common.RespUserInfo;
import cn.itcalvin.sncoal.cth.pojo.req.pf.ReqBatchCommit;
import cn.itcalvin.sncoal.cth.pojo.req.pf.ReqPfCopy;
import cn.itcalvin.sncoal.cth.pojo.req.pf.ReqPfItemList;
import cn.itcalvin.sncoal.cth.pojo.req.pf.ReqPfList;
import cn.itcalvin.sncoal.cth.pojo.response.pf.*;
import cn.itcalvin.tk.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

@Mapper
public interface InfoPfMapper extends BaseMapper<InfoPf> {

    /**
     * 评分列表查询
     * @param reqPfList
     * @return
     */
    List<RespPfList> list(@Param("reqPfList") ReqPfList reqPfList);

    /**
     * 获取详情
     *
     * @param id
     * @return
     */
    RespPfDetails details(@Param("id") Long id);

    /**
     * 创建评分任务的时候，初始化各项数据
     * @param pfId
     * @param userInfo
     * @return
     */
    int insertPfAndItemAndDetails(@Param("pfId") Long pfId,@Param("userInfo") RespUserInfo userInfo);

    /**
     * 删除某个评分任务的时候，删除相关数据
     * @param pfId
     * @return
     */
    int deletePfAndItemAndDetails(@Param("pfId") Long pfId);

    /**
     * 获取评分系统的数据
     * @param id
     * @return
     */
    List<RespPfListSystem> systemList(@Param("id") Long id);

    /**
     * 获取评分系统的数据
     * @param reqPfItemList
     * @return
     */
    List<RespPfItemList> pfItemList(@Param("reqPfItemList")ReqPfItemList reqPfItemList,
                                    @Param("mineId") Long mineId);


    /**
     * 查看某任务的状态
     * @param reqPfItemList
     * @param type
     * @return
     */
    RespPfItemState pfItemListState(@Param("reqPfItemList")ReqPfItemList reqPfItemList, @Param("type")Integer type);

    /**
     * 复制自评数据到核验
     * @param pfId
     */
    int copyZpDataToHy(@Param("pfId") Long pfId);


    /**
     * 批量提交自评
     * @param reqBatchCommit
     * @param userInfo
     */
    Integer modifyBySystemIdZp(@Param("reqBatchCommit") ReqBatchCommit reqBatchCommit,
                               @Param("userInfo") RespUserInfo userInfo,@Param("state") Integer state);


    /**
     * 批量提交核验
     * @param reqBatchCommit
     * @param userInfo
     * @return
     */
    Integer modifyBySystemIdHy(@Param("reqBatchCommit") ReqBatchCommit reqBatchCommit,
                               @Param("userInfo") RespUserInfo userInfo,@Param("state") Integer state);


    /**
     * 导出某任务各系统得分情况
     * @param pfId
     * @return
     */
    List<RespPfExport> exportPfByIdHy(@Param("pfId") Long pfId);

    List<RespPfExportZp> exportPfByIdZp(@Param("pfId") Long pfId);

    InfoPf getLastPF(@Param("mineId") Long mineId, @Param("checkTime")Date checkTime);

}